A storage server is a computer that provides storage services relating to the organization of data on writable, storage media, such as non-volatile memories and disks. A storage server may be configured to operate according to a client/server model of information delivery to enable many clients (e.g., applications) to access the data served by the system. A storage server can employ a storage architecture that serves the data with both random and streaming access patterns at either a file level, as in network attached storage (NAS) environments, or at the block level, as in a storage area network (SAN). Storage servers store data on various types of non-volatile storage media such as, for example, relatively high latency (i.e., longer access times) hard disk drive devices (HDDs) and relatively low latency (i.e., shorter access times) solid-state devices (SSDs) such as flash memory or DRAM.
A network storage system may be configured in many ways. For example, the network storage system may be a monolithic, non-distributed storage server or may be clustered to allow many storage clients to access data containers that are stored in the storage system and managed by one or more storage servers. For example, a client may execute an application, such as a database application, that “connects” to the storage system over a computer network, such as a point-to-point link, shared local area network (LAN), wide area network (WAN), or virtual private network (VPN) implemented over a public network such as the Internet. Each client may request the data services of the storage system by issuing access requests (read/write requests) as file-based and block-based protocol messages (in the form of packets) to the system over the network.
In addition, each client may execute numerous applications requiring the data services of the network storage system. As such, each application may be considered a workload that is serviced by the network storage system. Each workload may have one or more specified service-level objectives (SLOs) relating to a storage system characteristic or attribute, such as a performance or protection metric. For example, a workload may have an SLO specifying a minimum value of X (the target value) for data throughput (the SLO metric) to be achieved by the network storage system when servicing the workload.
In many cases, a network storage system will simultaneously service numerous workloads of different types and with varying levels of service, as specified by the SLOs. In this situation, performance and protection problems may arise because different types of workloads can interfere with each other. The increasing size and complexity of modern network storage systems has made storage capacity planning and storage administration, for ensuring that all SLOs of all workloads are achieved, very difficult.
For example, evaluating proposed storage solutions for meeting SLOs and accurately predicting their results prior to execution can be difficult given the dynamic nature of the storage system. Moreover, if a solution has to be reversed (e.g., because a solution does not achieve the intended results), a substantial amount of time and resources may be necessary to reverse the implemented solution. As such, systems and methods for accurately predicting results of each proposed solution are needed.